package org.sxp.modules.dataworks.entity;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.annotation.TableField;
import org.sxp.common.config.ListJSONHandler;
import org.sxp.common.dto.BaseDO;
import org.sxp.common.utils.XPBeanUtils;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.util.List;

/**
 * 
 * @author 沈兴平
 * @date 2021/12/30
 */
@Data
@TableName(value = "dataworks_sync_list", autoResultMap = true)
public class SyncDO extends BaseDO implements Serializable {
	private static final long serialVersionUID = 1L;

	/**
	 * 主键
	 */
	@TableId(type = IdType.ASSIGN_ID)
	private String id;

	/**
	 * 名称
	 */
	private String name;

	/**
	 * 来源库
	 */
	private String sourceDb;

	/**
	 * 来源库版本
	 */
	private String sourceDbVersion;
	/**
	 * 来源库类型
	 */
	private String sourceDbType;

	/**
	 * 来源表
	 */
	private String sourceTable;

	/**
	 * 目标库
	 */
	private String targetDb;
	/**
	 * 目标库版本
	 */
	private String targetDbVersion;
	/**
	 * 目标库类型
	 */
	private String targetDbType;

	/**
	 * 目标表
	 */
	private String targetTable;
	/**
	 * 任务并发数
	 */
	private Integer syncNum;
	/**
	 * 同步速率(单位MB/s)
	 */
	private Integer syncRate;
	/**
	 * 读取行数的限制
	 */
	private Integer syncRecord;
	/**
	 * 过滤sql
	 */
	private String whereSql;
	/**
	 * 自定义SQL
	 */
	private String querySql;
	/**
	 * 调度任务ID
	 */
	private Integer jobinfoId;
	@TableField(exist = false)
	private String jobinfoName;

	/**
	 * 源映射字段
	 */
	@TableField(typeHandler = ListJSONHandler.class)
	private List<JSONObject> sourceField;
	private String sourceFieldStr;

	/**
	 * 目标映射字段
	 */
	@TableField(typeHandler = ListJSONHandler.class)
	private List<JSONObject> targetField;
	private String targetFieldStr;

	/**
	 * datax任务表达式
	 */
	private String dataxJson;
	/**
	 * 写模式(insert/update/replace)
	 */
	private String writeMode;

	/**
	 * 资源分组
	 */
	private String spaceId;

    public static SyncDO copyBean(Object source) throws Exception{
        return XPBeanUtils.copyBean(source, SyncDO.class);
    }
}
